const express = require("express");
const mongoose = require("mongoose");
const app = express();
app.use(express.json())//让框架能够解析json格式的数据


//在项目中public文件夹一般表示静态资源目录
//这个文件夹事可以直接在客户端访问到的
// 为express项目设置静态资源目录
//参数一 表示url中访问的路径
//参数二 表示静态资源的目录
app.use('/', express.static('./public'))
const Person = require('./models/person')

mongoose
  .connect("mongodb://localhost:27017/db-zh")
  .then(() =>{
  console.log("数据库连接成功");
  })
  .catch((err) => {
  console.log(err);
  })


//req 表示request
// res 表示respond
app.get("/", (req, res) => {
  res.send("123");
});


//获取列表
app.get("/api/v1/people", async (req, res) => {
  const data = await Person.find({}).sort({
    _id: -1,
  })
  res.json(data);
});

//：id表示占位符，动态路由
//可以通过 /6-30/people/1  /6-30/people/2
//获取单个
app.get("/api/v1/people/:id", async (req, res) => {
  // req.params 获取路由中的参数 返回的是一个对象
  const data = await Person.findById(req.params.id);
  // res.json(req.params);
 
  res.json(data);

});

//新增
app.post("/api/v1/people", async (req, res) => {
  if (req.body.name) {
    const data = new Person(req.body)
    await data.save()
    res.json({
      code: 1,
      data: "保存成功",
    });
  } else {
    res.json({
      code: 0,
      data: "name不为空",
    });
  }
  
})

//修改
app.put("/api/v1/people", async (req, res) => {
  await Person.findByIdAndUpdate(req.params.id,req.body)
  res.json({
    code: 1,
    data: "修改成功",
  });``
})


//删除
app.delete("/api/v1/people/:id", async (req, res) => {
  await Person.findByIdAndDelete(req.params.id);
  res.json({
    code: 1,
    data: "删除成功",
  });
})


//use 使用一个中间件，挂载上传的接口
//第一个参数 url中访问的路径
// 参数二 表示处理函数

app.use("/api/v1/products",require("./routers/api/v1/products"))
app.use("/api/v1/movies",require("./routers/api/v1/movies"))

app.listen(300, () => {
  console.log("运行在3000端口");
});
